/*
 * @Author: jack_yang98 1246900429@qq.com
 * @Date: 2024-08-04 14:04:55
 * @LastEditors: jack_yang98 1246900429@qq.com
 * @LastEditTime: 2024-08-04 15:56:21
 * @FilePath: /gateway/app/app_message.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#ifndef _APP_MESSAGE_H__
#define _APP_MESSAGE_H__

typedef enum ConnectionTypeEnum
{
    CONNECTION_TYPE_NONE = 0,
    CONNECTION_TYPE_LORA = 1,
    CONNECTION_TYPE_BLE_MESH = 2,
} ConnectionType;

typedef struct
{
    ConnectionType connection_type; // 连接类型
    int id_len;    // id长度
    int data_len;  // 数据长度
    void *payload; // 数据
} Message;

/**
 * @description: 初始化消息
 * @param {Message} *message 消息
 * @param {char} *binary 二进制数据
 * @param {int} len 二进制数据长度
 * @return {*} 成功 0 失败 -1
 */
int App_message_initByBinary(Message *message,unsigned char *binary, int len);

/**
 * @description: 初始化消息
 * @param {Message} *message 消息
 * @param {char} *json_str json字符串
 * @param {int} len json字符串长度
 * @return {*} 成功 0 失败 -1
 */
int App_message_initByJson(Message *message, char *json_str, int len);

/**
 * @description: 保存消息
 * @param {Message} *message 消息
 * @param {unsigned char} *binary 二进制数据
 * @param {int} len 二进制数据长度
 * @return {*} 成功 保存消息的总长度 失败 -1
 */
int App_message_saveBinary(Message *message,unsigned char *binary, int len);

/**
 * @description: 保存消息
 * @param {Message} *message 消息
 * @param {char} *json_str json字符串
 * @param {int} len json字符串长度
 * @return {*} 成功 0 失败 -1
 */
int App_message_saveJson(Message *message, char *json_str, int len);


/**
 * @description: 消息释放
 * @param {Message} *message
 * @return {*}
 */
void App_message_free(Message *message);

#endif